Imports System
Imports System.Data.SqlClient
Imports System.Configuration
Public Class DPeriododeCargo
    Dim oCnn As New DConexion
    'SOBRECARGADO
    Public Sub cargarPeriodo(ByVal periodo As Entidades.EPeriododeCargo, ByRef conn As SqlConnection, ByRef tran As SqlTransaction)
        Dim Cmd As New SqlCommand
        Try
            Cmd.Connection = conn
            Cmd.Transaction = tran
            Cmd.CommandType = CommandType.StoredProcedure
            Cmd.CommandText = "CargarCargoxPeriodo"
            Cmd.Parameters.AddWithValue("@legajo", periodo.LegajoPersonal)
            Cmd.Parameters.AddWithValue("@cargo", periodo.CodigoCargo)
            Cmd.Parameters.AddWithValue("@FechaAlta", periodo.FechaAlta)
            Cmd.Parameters.AddWithValue("@FechaBaja", periodo.FechaBaja)
            Cmd.Parameters.AddWithValue("@situacion", periodo.SituacionRevista)
            Cmd.ExecuteNonQuery()
            Cmd.Dispose()
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try
    End Sub

    'SOBRECARGADO
    Public Function cargarPeriodo(ByVal periodo As Entidades.EPeriododeCargo) As Boolean
        Dim band As Boolean = False
        Try
            oCnn.abrirConexion()
            Dim Cmd As New SqlCommand
            Cmd.Connection = oCnn.obtenerConexion
            Cmd.CommandType = CommandType.StoredProcedure
            Cmd.CommandText = "CargarCargoxPeriodo"
            Cmd.Parameters.AddWithValue("@legajo", periodo.LegajoPersonal)
            Cmd.Parameters.AddWithValue("@cargo", periodo.CodigoCargo)
            Cmd.Parameters.AddWithValue("@FechaAlta", periodo.FechaAlta)
            Cmd.Parameters.AddWithValue("@FechaBaja", periodo.FechaBaja)
            Cmd.Parameters.AddWithValue("@situacion", periodo.SituacionRevista)
            Cmd.ExecuteNonQuery()
            band = True
            Cmd.Dispose()
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try
        oCnn.cerrarConexion()
        Return band
    End Function

    'SOBRECARGADO: busca periodos de cargo por personal
    Public Function buscarPeriodosDeCargo1(ByVal legajo As Integer) As List(Of Entidades.EPeriododeCargo)
        Dim oCmd As New SqlCommand
        Dim oPeriodos As New List(Of Entidades.EPeriododeCargo)
        Try
            oCnn.abrirConexion()
            oCmd.Connection = oCnn.obtenerConexion
            oCmd.CommandType = CommandType.StoredProcedure
            oCmd.CommandText = "BuscarPeriodosdeCargos"
            oCmd.Parameters.AddWithValue("@legajo", legajo)
            Dim dr As SqlDataReader
            dr = oCmd.ExecuteReader
            Do While dr.Read
                Dim objeto As New Entidades.EPeriododeCargo
                objeto.LegajoPersonal = dr("idPersonal")
                objeto.CodigoCargo = dr("idCargo")
                objeto.FechaAlta = dr("FechaAlta")
                objeto.FechaBaja = dr("FechaBaja")
                objeto.SituacionRevista = dr("SituacionRevista")
                oPeriodos.Add(objeto)
                objeto = Nothing
            Loop
            oCnn.cerrarConexion()
            Return oPeriodos
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        Finally
            oPeriodos = Nothing
        End Try
    End Function

    'SOBRECARGADO: busca periodos de cargo por cargo
    Public Function buscarPeriodosDeCargo(ByVal cargo As Entidades.ECargo) As List(Of Entidades.EPeriododeCargo)
        Dim oCmd As New SqlCommand
        Dim oPeriodos As New List(Of Entidades.EPeriododeCargo)
        Try
            oCnn.abrirConexion()
            oCmd.Connection = oCnn.obtenerConexion
            oCmd.CommandType = CommandType.StoredProcedure
            oCmd.CommandText = "BuscarPeriodosdeCargosxcargo"
            oCmd.Parameters.AddWithValue("@cargo", cargo.Codigo)
            Dim dr As SqlDataReader
            dr = oCmd.ExecuteReader
            Do While dr.Read
                Dim objeto As New Entidades.EPeriododeCargo
                objeto.LegajoPersonal = dr("idPersonal")
                objeto.CodigoCargo = dr("idCargo")
                objeto.FechaAlta = dr("FechaAlta")
                objeto.FechaBaja = dr("FechaBaja")
                objeto.SituacionRevista = dr("SituacionRevista")
                oPeriodos.Add(objeto)
                objeto = Nothing
            Loop
            oCnn.cerrarConexion()
            Return oPeriodos
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        Finally
            oPeriodos = Nothing
        End Try
    End Function

    Public Function existePeriodo(ByVal periodo As Entidades.EPeriododeCargo) As Boolean
        Dim Cmd As New SqlCommand
        Dim resul As Boolean = False
        Try
            oCnn.abrirConexion()
            Cmd.Connection = oCnn.obtenerConexion
            Cmd.CommandType = CommandType.StoredProcedure
            Cmd.CommandText = "BuscarPeriododeCargos"
            Cmd.Parameters.AddWithValue("@legajo", periodo.LegajoPersonal)
            Cmd.Parameters.AddWithValue("@cargo", periodo.CodigoCargo)
            Dim dr As SqlDataReader
            dr = Cmd.ExecuteReader
            dr.Read()
            If dr.HasRows Then
                resul = True
            End If
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try
        oCnn.cerrarConexion()
        Return resul
    End Function

    Public Function modificarPeriodo(ByVal periodo As Entidades.EPeriododeCargo) As Boolean
        Dim band As Boolean = False
        Try
            oCnn.abrirConexion()
            Dim oCmd As New SqlCommand
            oCmd.Connection = oCnn.obtenerConexion
            oCmd.CommandType = CommandType.StoredProcedure
            oCmd.CommandText = "ModificarPeriodoCargo"
            oCmd.Parameters.AddWithValue("@personal", periodo.LegajoPersonal)
            oCmd.Parameters.AddWithValue("@cargo", periodo.CodigoCargo)
            oCmd.Parameters.AddWithValue("@fechaAlta", periodo.FechaAlta)
            oCmd.Parameters.AddWithValue("@fechaBaja", periodo.FechaBaja)
            oCmd.Parameters.AddWithValue("@situacion", periodo.SituacionRevista)
            oCmd.ExecuteNonQuery()
            oCmd.Dispose()
            band = True
            oCnn.cerrarConexion()
            Return band
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try
    End Function
End Class
